博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP 分页技术
阅读量:6532 次
发布时间:2019-06-24

本文共 4249 字,大约阅读时间需要 14 分钟。

hot3.png

1. PHP 数据显示分页技术

数据分页概述 对大量数据进行分页显示是 Web 开发中最常见的情况,但大多刚开始接触 Web 开发的开发人员,对分页技术往往比较迷惘,本节教程以一个分页显示留言板的数据为例就来演示一下 PHP 中基本的数据分页显示原理。 本节教程需要用到的 PHP基础知识 : PHP 预定义 $_GET 变量来接收 URL 参数信息,具体参见《PHP $_GET》。 if 流程控制,具体参见《PHP if ... else 流程控制》。 MySQL 数据库表基础知识,具体参见《MySQL 基本概念》。 MySQL 数据查询,具体参见《MySQL Select From 查询数据》 MySQL 数据查询,具体参见《MySQL LIMIT 限定查询记录数》。 数据准备 假设储存留言的数据表(guestbook)数据如下: id nickname email content createtime 1 admin 留言测试 1264167501 2 user 大家好 1264168127 3 小明 做得好,继续努力。。 1264168865 4 小张 来看看 1264169118 5 小丽 haha 1283276566 6 Tom Hello 1283336218 7 Jack okok 1283336315 8 admin 嗯嗯 1283336315 9 阿里巴巴 来看看 1283337158 10 路人甲 哈哈哈 1283338228 建表 SQL 参考如下: CREATE TABLE guestbook ( id mediumint(8) unsigned NOT NULL auto_increment, nickname char(15) NOT NULL default '', email varchar(100) NOT NULL default '', content text NOT NULL, createtime int(10) unsigned NOT NULL default '0', PRIMARY KEY (id) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 分页原理 目的很简单,就是将较多数据记录,分页显示出来,每一页显示设定的数据条数。 分页显示格式如下: 共 10 条留言 [1] 2 3 该格式比较简单,只显示了总的数据和各个分页数。当前页面显示为 [1] 这样的格式,非当前页面的页数则显示为超链接格式。 PHP 分页技术核心在于确定当前的页数,然后利用 MySQL 的 LIMIT 关键字来指定输出对应的记录数。 如当前是第 1 页时,那么就是 LIMIT 0,4(假设一页输出 4 条记录),第 2 页时,就是 LIMIT 4,4,第 3 页时,就是 LIMIT 8,4 … 依此类推,第 n 页时,就是 LIMIT (n-1)*4,4 。 而当前页数 $p 这个参数,通过 URL 来获取。如 这个这个 URL 链接,表示当前为第 2 页,PHP 中通过 $_GET['p'] 来取得对应的页数值 2 。而对于首页,则没有 $p 这个参数,那么就设定为默认值 1 即可。

  1. 分页代码实现

数据库链接及参数设定
//数据库连接
@mysql_connect("localhost","root","root123") or die("连接数据库失败:".mysql_error());
mysql_select_db("test");
mysql_query("set character set 'gbk'");
//每页显示的留言数
$pagesize = 4;
输出当前页数据
//确定当前页数 $p 参数
$p = $_GET['p']?$_GET['p']:1;
//数据指针
$offset = ($p-1)*$pagesize;
//查询本页显示的数据
$query_sql = "SELECT * FROM guestbook ORDER BY id DESC LIMIT $offset , $pagesize";
$result = mysql_query($query_sql);
//循环输出
while($gblist = mysql_fetch_array($result)){
echo '',$gblist['nickname'],' ';
echo '发表于:',date("Y-m-d H:i", $gblist[createtime]),'
';
echo '内容:',$gblist['content'],'

';
}

确定当前页参数 $p 中,使用了一个三元运算符: $p = $_GET['p']?$_GET['p']:1; 可以这么通俗的理解该运算符:$_GET['p'] 存在吗?如果存在,那么 $p = $_GET['p'] ,如果不存在,那么 $p = 1 。 接下来就是读取当前页面显示数据的具体代码,该部分可参考《MySQL Select From 查询数据》。 输出分页格式

//分页代码
//计算留言总数
$count_result = mysql_query("SELECT count(*) as count FROM guestbook");
$count_array = mysql_fetch_array($count_result);
//计算总的页数
$pagenum=ceil($count_array['count']/$pagesize);
echo '共 ',$count_array['count'],' 条留言';
//循环输出各页数目及连接
if ($pagenum > 1) {
for($i=1;$i<=$pagenum;$i++) {
if($i==$p) {
echo ' [',$i,']';
} else {
echo ' ',$i,'';
}
}
}

如果确定页数大于 1 ,则开始输出分页页码。如果是当前页码,这输出 [2] 这样的格式,如果不是当前页码,则输出超链接格式。 完整代码 完整代码如下:

//数据库连接
@mysql_connect("localhost","root","root123") or die("连接数据库失败:".mysql_error());
mysql_select_db("test");
mysql_query("set character set 'gbk'");
//每页显示的留言数
$pagesize = 4;
//确定页数 p 参数
$p = $_GET['p']?$_GET['p']:1;
//数据指针
$offset = ($p-1)*$pagesize;
//查询本页显示的数据
$query_sql = "SELECT * FROM guestbook ORDER BY id DESC LIMIT $offset , $pagesize";
//echo $query_sql;
$result = mysql_query($query_sql);
//循环输出
while($gblist = mysql_fetch_array($result)){
echo '',$gblist['nickname'],'�';
echo '发表于:',date("Y-m-d H:i", $gblist[createtime]),'
';
echo '内容:',$gblist['content'],'

';
}
//分页代码
//计算留言总数
$count_result = mysql_query("SELECT count(*) as count FROM guestbook");
$count_array = mysql_fetch_array($count_result);
//计算总的页数
$pagenum=ceil($count_array['count']/$pagesize);
echo '共 ',$count_array['count'],' 条留言';
//循环输出各页数目及连接
if ($pagenum > 1) {
for($i=1;$i<=$pagenum;$i++) {
if($i==$p) {
echo ' [',$i,']';
} else {
echo ' ',$i,'';
}
}
}
?>

运行显示效果: Tom 发表于:2010-09-01 18:16 内容:Hello


小丽 发表于:2010-09-01 01:42 内容:hahaha


小张 发表于:2010-01-22 22:05 内容:来看看


小明 发表于:2010-01-22 22:01 内容:做得好,继续努力


共 10 条留言 1 [2] 3

转载于:https://my.oschina.net/u/1454488/blog/206714

你可能感兴趣的文章
获得文件和文件夹的所有权
查看>>
烂泥:学习mysql数据库主从同步复制原理
查看>>
Java相对路径读取文件
查看>>
PostgreSQL 商用版本EPAS(阿里云ppas) 自动(postgresql.conf)参数计算与适配功能
查看>>
烂泥:学习ssh之ssh隧道应用
查看>>
Android TableLayout 常用的属性介绍及演示
查看>>
Ajax跨域访问XML数据的另一种方式——使用YQL查询语句
查看>>
[原创]让您的服务器不再有被挂马的烦恼---文件安全卫士
查看>>
流水线和PC指针
查看>>
Fiddler设置抓取https请求
查看>>
div布局小技巧
查看>>
OCP 12c最新考试原题及答案(071-4)
查看>>
MHA故障切换和在线手工切换原理
查看>>
Python版本切换和Pip安装
查看>>
SilverLigth学习笔记--控制 Silverlight控件样式(转)
查看>>
poj3262
查看>>
第四十天笔记
查看>>
4、动态代理
查看>>
Loj #6073.「2017 山东一轮集训 Day5」距离
查看>>
我的TCP/IP学习笔记
查看>>